package main

import (
	"imooc.com/ccmouse/learngo/interface/design/action/strategy/all"
	"log"
)

// 应用场景: 有多种算法或策略时，希望根据不同条件选择不同算法，而不该改变客户端代码时
// 策略模式：将算法封装在单独的类中，使得算法可以相互替换 + 工厂方法模式

func main() {
	memoryManage := all.NewMemoryManage(all.Lru)
	res := memoryManage.Evict("lru")
	log.Print(res)

	memoryManage = all.NewMemoryManage(all.Fifo)
	res = memoryManage.Evict("fifo")
	log.Print(res)

	memoryManage = all.NewMemoryManage(all.Lfu)
	res = memoryManage.Evict("lfu")
	log.Print(res)
}
